package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户【从控制台】输入文件名--->假设：   a.txt
 *      然后，针对文件进行读写操作
 *      用户可以在【控制台】输入一行行的文本内容，要求：写入a.txt文件中
 *      判断，如果用户输入“退出/exit”，程序结束
 *      a.txt直接出现在javaAPI项目下  保存对应文本的内容
 *
 *
 * 要求：1.标准流---结合异常处理
 *      2.输出流--->输入流【读】   单元测试   testNote()
 */
public class Note {
    //单元测试：   相对路径 ./a.txt  当前父级文件夹路径  API下
    //主方法：     相对路径 ./a.txt  当前根级文件夹路径  javaAPI下
    public static void main(String[] args) {
        FileOutputStream
                fos = null;
        OutputStreamWriter
                osw = null;
        BufferedWriter
                bw = null;
        PrintWriter
                pw = null;

        //try/catch/finally适配IO   捕获异常---关闭流【高级流】
        try {
            //1.从控制台输入：  a.txt  文本
            Scanner input = new Scanner(System.in);
            System.out.println("请输入你的文件名字：");
            String text = input.nextLine(); //获取一行文本
            //   System.out.println(text);  打桩
            //2.套流 ---（写）     【考试题】

            fos = new FileOutputStream(text);

            osw = new OutputStreamWriter(fos, "UTF8"); //转换流    “万国码”

            bw = new BufferedWriter(osw);//缓冲输出流--加速字符串输出

            pw = new PrintWriter(bw);
            //3.往假设a.txt 写入文件----一直写，直到写出文件“退出/exit”
            //3.1 定义字符串变量--赋值为null，接收用户每次输入“文本内容”
            String line = null;
            //3.2【补充操作：考虑用户体验】提示内容
            System.out.println("请开始输入内容【‘退出’程序结束】：");
            //3.2一直写入
            while (true) {
                line = input.nextLine();//控制台获取一行文本
                //3.3判断条件---判断line是否等于  退出  或者  exit   结束程序
                if (line.equals("退出") || line.equals("exit")) {
                    break;//跳出方法体
                }

                //3.4  PW  字符输出流--写出
                pw.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //3.5【用户体验】拜拜~
            System.out.println("拜拜~~~,请查看API文件夹生成文件！");

            if(pw!=null)

            //3.6关闭高级流
            pw.close();
        }
    }

 /*@Test
    public void testNote(){
    Scanner input = new Scanner(System.in);
    System.out.println("请输入你的文件名字：");
    String text = input.nextLine();
    try {
        FileInputStream fis=new FileInputStream(text);
        InputStreamReader isr=new InputStreamReader(fis,"UTF8");
        BufferedReader br=new BufferedReader(isr);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } finally {
        try {
            if(br!=null)
              br.close;
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

        }*/

}

